<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BTextEdit</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BTextEdit">
			<h1>BTextEdit</h1>
			<p>继承自<a href="BScrollArea.html">BScrollArea</a></p>
			<p id="resume">BTextEdit是文本编辑框，用于多行文本浏览和编辑，因其高效且灵活的特性被广泛应用。<a href="#desc">详细</a></p><h2>public</h2>
			<table id="public">
				<tr><td align="right"/><td><a href="#BTextEdit(BWidget*)">BTextEdit</a>(BWidget* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#BTextEdit(const BString&,BWidget*)">BTextEdit</a>(const BString&amp; title, BWidget* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#~BTextEdit()">~BTextEdit</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#load(const BString&)">load</a>(const BString&amp; fileName);</td></tr>
				<tr><td align="right">bool </td><td><a href="#save(const BString&) const">save</a>(const BString&amp; fileName) const;</td></tr>
				<tr><td align="right">void </td><td><a href="#clear()">clear</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#setLineSpacing(int)">setLineSpacing</a>(int lineSpacing);</td></tr>
				<tr><td align="right">int </td><td><a href="#lineSpacing() const">lineSpacing</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setLineHeight(int)">setLineHeight</a>(int lineHeight);</td></tr>
				<tr><td align="right">int </td><td><a href="#lineHeight() const">lineHeight</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setLineFeed(bool)">setLineFeed</a>(bool lineFeed);</td></tr>
				<tr><td align="right">bool </td><td><a href="#lineFeed() const">lineFeed</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setWordWrap(bool)">setWordWrap</a>(bool wordWrap);</td></tr>
				<tr><td align="right">bool </td><td><a href="#wordWrap() const">wordWrap</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setBlinkTime(BReal)">setBlinkTime</a>(BReal blinkTime);</td></tr>
				<tr><td align="right">BReal </td><td><a href="#blinkTime() const">blinkTime</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setReadOnly(bool)">setReadOnly</a>(bool readOnly);</td></tr>
				<tr><td align="right">bool </td><td><a href="#readOnly() const">readOnly</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setStackSize(int)">setStackSize</a>(int stackSize);</td></tr>
				<tr><td align="right">int </td><td><a href="#stackSize() const">stackSize</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setText(const BString&)">setText</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">const BString&amp; </td><td><a href="#text() const">text</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setLineText(int, const BString&)">setLineText</a>(int line, const BString&amp; text);</td></tr>
				<tr><td align="right">const BString&amp; </td><td><a href="#lineText(int) const">lineText</a>(int line) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#addText(const BString&)">addText</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">bool </td><td><a href="#inputText(const BString&)">inputText</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">bool </td><td><a href="#insertText(int, const BString&)">insertText</a>(int index, const BString&amp; text);</td></tr>
				<tr><td align="right">bool </td><td><a href="#insertText(int, int, const BString&)">insertText</a>(int line, int index, const BString&amp; text);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeText(int, int)">removeText</a>(int index, int count);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeText(int, int, int)">removeText</a>(int line, int index, int count);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeLine(int) const">removeLine</a>(int line) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeLines(int, int) const">removeLines</a>(int line, int count) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setInputPos(int, int)">setInputPos</a>(int line, int index);</td></tr>
				<tr><td align="right">bool </td><td><a href="#setInputPos(int)">setInputPos</a>(int index);</td></tr>
				<tr><td align="right">int </td><td><a href="#inputPos() const">inputPos</a>() const;</td></tr>
				<tr><td align="right">int </td><td><a href="#inputPos(int&) const">inputPos</a>(int&amp; line) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#select(int, int)">select</a>(int min, int max);</td></tr>
				<tr><td align="right">bool </td><td><a href="#select(const BRange&)">select</a>(const BRange&amp; range);</td></tr>
				<tr><td align="right">bool </td><td><a href="#selectLines(int, int)">selectLines</a>(int firstLine, int lastLine);</td></tr>
				<tr><td align="right">BRange </td><td><a href="#selectedRange() const">selectedRange</a>() const;</td></tr>
				<tr><td align="right">BString </td><td><a href="#selectedText() const">selectedText</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeSelection()">removeSelection</a>();</td></tr>
				<tr><td align="right">int </td><td><a href="#codeCount() const">codeCount</a>() const;</td></tr>
				<tr><td align="right">int </td><td><a href="#indexAt(const BPoint&) const">indexAt</a>(const BPoint&amp; point) const;</td></tr>
				<tr><td align="right">BRect </td><td><a href="#codeRect(int) const">codeRect</a>(int index) const;</td></tr>
				<tr><td align="right">BRect </td><td><a href="#codeRect(int, int) const">codeRect</a>(int line, int index) const;</td></tr>
				<tr><td align="right">BCode </td><td><a href="#code(int) const">code</a>(int index) const;</td></tr>
				<tr><td align="right">BCode </td><td><a href="#code(int, int) const">code</a>(int line, int index) const;</td></tr>
				<tr><td align="right">int </td><td><a href="#lineCount() const">lineCount</a>() const;</td></tr>
				<tr><td align="right">int </td><td><a href="#lineAt(const BPoint&) const">lineAt</a>(const BPoint&amp; point) const;</td></tr>
				<tr><td align="right">const BRange&amp; </td><td><a href="#lineRange(int) const">lineRange</a>(int line) const;</td></tr>
				<tr><td align="right">const BRect&amp; </td><td><a href="#lineRect(int) const">lineRect</a>(int line) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setLineVisible(int, bool)">setLineVisible</a>(int line, bool visible);</td></tr>
				<tr><td align="right">bool </td><td><a href="#lineVisible(int) const">lineVisible</a>(int line) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#setTextFormat(BTextFormat*)">setTextFormat</a>(BTextFormat* format);</td></tr>
				<tr><td align="right">const BTextFormat* </td><td><a href="#textFormat() const">textFormat</a>() const;</td></tr>
				<tr><td align="right">BTextFormat* </td><td><a href="#textFormat()">textFormat</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#setLineFormat(int, BTextFormat*)">setLineFormat</a>(int line, BTextFormat* format);</td></tr>
				<tr><td align="right">const BTextFormat* </td><td><a href="#lineFormat(int) const">lineFormat</a>(int line) const;</td></tr>
				<tr><td align="right">BTextFormat* </td><td><a href="#lineFormat(int)">lineFormat</a>(int line);</td></tr>
				<tr><td align="right">bool </td><td><a href="#redo()">redo</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#undo()">undo</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#pushOpera(BOpera*)">pushOpera</a>(BOpera* opera);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeOpera(BOpera*)">removeOpera</a>(BOpera* opera);</td></tr>
				<tr><td align="right">int </td><td><a href="#operaIndex() const">operaIndex</a>() const;</td></tr>
				<tr><td align="right">int </td><td><a href="#operaCount() const">operaCount</a>() const;</td></tr>
				<tr><td align="right">const BOpera* </td><td><a href="#opera(int) const">opera</a>(int index) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#clearOperas()">clearOperas</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#scrollToLine(int,Align)">scrollToLine</a>(int line, Align align = Align_None);</td></tr>
				<tr><td align="right">bool </td><td><a href="#scrollToCode(int, int,Align)">scrollToCode</a>(int line, int index, Align align = Align_None);</td></tr>
				<tr><td align="right">bool </td><td><a href="#scrollToRange(const BRange&,Align)">scrollToRange</a>(const BRange&amp; range, Align align = Align_None);</td></tr>
				<tr><td align="right">using </td><td><a href="#BScrollArea::input;()">BScrollArea::input;</a></td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#input(const BString&, const BValue&)">input</a>(const BString&amp; text, const BValue&amp; value);</td></tr>
				<tr><td align="right">using </td><td><a href="#BScrollArea::query;()">BScrollArea::query;</a></td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#query(const BString&, BValue&) const">query</a>(const BString&amp; text, BValue&amp; value) const;</td></tr>
			</table>
			<h2>protected</h2>
			<table id="protected">
				<tr><td align="right">virtual void </td><td><a href="#scrolling(Orientation)">scrolling</a>(Orientation orientation);</td></tr>
			</table>
			<h2>protected</h2>
			<table id="protected">
				<tr><td align="right">virtual void </td><td><a href="#updateEvent(const BEvent&)">updateEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#resizeEvent(const BEvent&)">resizeEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#styleEvent(const BEvent&)">styleEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#freshEvent(const BEvent&)">freshEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#paintEvent(const BEvent&)">paintEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#focusEvent(const BEvent&)">focusEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#inputEvent(const BEvent&)">inputEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#keyPressEvent(const BKeyEvent&)">keyPressEvent</a>(const BKeyEvent&amp; keyEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#keyReleaseEvent(const BKeyEvent&)">keyReleaseEvent</a>(const BKeyEvent&amp; keyEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseEnterEvent(const BMouseEvent&)">mouseEnterEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseLeaveEvent(const BMouseEvent&)">mouseLeaveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mousePressEvent(const BMouseEvent&)">mousePressEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseReleaseEvent(const BMouseEvent&)">mouseReleaseEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseMoveEvent(const BMouseEvent&)">mouseMoveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseDoubleClickEvent(const BMouseEvent&)">mouseDoubleClickEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>BTextEdit是文本编辑框，用于多行文本浏览和编辑，因其高效且灵活的特性被广泛应用。</p><p>为了提高编辑的效率将文本分为多个行单元，常常将行作为操作的对象。</p><p>若开启了只读模式，那么文本不再可以编辑，同时选择和复制功能是有效的。</p><p>此页面的按键事件处理中包含了对Ctrl+C、Ctrl+X、Ctrl+V、Ctrl+Z、Ctrl+Shift+Z的处理，所以这些快捷键组合会被过滤掉。</p><p>编辑文本会被记录为操作对象（），使用栈容器存储这些操作对象。可使用方法setStackSize()修改栈的容量。默认的栈大小是-1，即栈大小无限制。若栈容量被设置为0，那么取消记录操作的功能。若给定了大于0的值，那么栈大小会被限制最大值，当更多的操作生成时会将旧的操作清除。</p><h4>信号表：</h4><table>
					<tr><td>Signal_Line_Hovered</td><td>当行被光标悬停时发出信号。</td></tr>
					<tr><td>Signal_TextChanged</td><td>当文本改变时发出，值为：const BString&amp; text。</td></tr>
					<tr><td>Signal_SelectionChanged</td><td>当文本选择改变时发出，值为：const BRange&amp; selectedRange。</td></tr>
					<tr><td>Signal_ReadOnly</td><td>当只读模式改变时发出，值为：bool readOnly。</td></tr>
					<tr><td>Signal_LineChanged</td><td>当行文本被改变时发出，值为：int line。</td></tr>
					<tr><td>Signal_Flushed</td><td>当各行被刷新后发出，无值。</td></tr>
					<tr><td>Signal_TextEdited</td><td>当文本被编辑时发出，值为：const BString&amp; text。</td></tr>
					<tr><td>Signal_EditFinished</td><td>当文本编辑操作完成时发出，值为：const BString&amp; text。</td></tr>
					<tr><td>Signal_FormatChanged</td><td>当文本格式对象改变时发出，值为：BTextFormat* format。</td></tr>
					<tr><td>Signal_Opera</td><td>当执行了一个操作时发出，值为：BOpera* opera。</td></tr>
					<tr><td>Signal_Clear</td><td>当清除所有文本时发出，无值。</td></tr></table>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="BTextEdit(BWidget*)">
				<h3>BTextEdit(BWidget* parent = 0);</h3>
				<p>构造一个文本编辑框，parent指定其父控件。</p>
			</div>
			<div id="BTextEdit(const BString&,BWidget*)">
				<h3>BTextEdit(const BString&amp; title, BWidget* parent = 0);</h3>
				<p>构造一个文本编辑框，title指定其标题文本，parent指定其父控件。</p>
			</div>
			<div id="~BTextEdit()">
				<h3>~BTextEdit();</h3>
				<p>析构一个文本编辑框。</p>
			</div>
			<div id="load(const BString&)">
				<h3>bool load(const BString&amp; fileName);</h3>
				<p>直接加载指定文件的文本内容。</p>
			</div>
			<div id="save(const BString&) const">
				<h3>bool save(const BString&amp; fileName) const;</h3>
				<p>直接加载指定文件的文本内容。</p>
			</div>
			<div id="clear()">
				<h3>void clear();</h3>
				<p>清空文件内容。</p>
			</div>
			<div id="setLineSpacing(int)">
				<h3>bool setLineSpacing(int lineSpacing);</h3>
				<p>设置行间距。</p>
			</div>
			<div id="lineSpacing() const">
				<h3>int lineSpacing() const;</h3>
				<p>获得行间距。</p>
			</div>
			<div id="setLineHeight(int)">
				<h3>bool setLineHeight(int lineHeight);</h3><p>设置行高，此值只有在大于字体尺寸时才会有效。</p>
			</div>
			<div id="lineHeight() const">
				<h3>int lineHeight() const;</h3><p>获得行高。</p>
			</div>
			<div id="setLineFeed(bool)">
				<h3>void setLineFeed(bool lineFeed);</h3>
				<p>设置是否开启自动换行。</p>
			</div>
			<div id="lineFeed() const">
				<h3>bool lineFeed() const;</h3>
				<p>获得是否开启了自动换行。</p>
			</div>
			<div id="setWordWrap(bool)">
				<h3>void setWordWrap(bool wordWrap);</h3>
				<p>设置是否开启词包裹功能，只有自动换行开启时行才有效。</p>
			</div>
			<div id="wordWrap() const">
				<h3>bool wordWrap() const;</h3>
				<p>获得是否开启词包裹功能。</p>
			</div>
			<div id="setBlinkTime(BReal)">
				<h3>void setBlinkTime(BReal blinkTime);</h3>
				<p>设置编辑指示器闪烁的时间间隔。默认值为1秒。</p>
			</div>
			<div id="blinkTime() const">
				<h3>BReal blinkTime() const;</h3>
				<p>获得编辑指示器闪烁的时间间隔。</p>
			</div>
			<div id="setReadOnly(bool)">
				<h3>void setReadOnly(bool readOnly);</h3>
				<p>设置是否开启只读模式，若开启了那么不可对文本进行编辑。</p>
			</div>
			<div id="readOnly() const">
				<h3>bool readOnly() const;</h3>
				<p>获得是否开启只读模式。</p>
			</div>
			<div id="setStackSize(int)">
				<h3>bool setStackSize(int stackSize);</h3>
				<p>设置编辑操作栈的大小，此值若大于0则会作为栈最大值限制，若为0表示不使用操作栈。</p>
			</div>
			<div id="stackSize() const">
				<h3>int stackSize() const;</h3>
				<p>获得编辑操作栈的大小。</p>
			</div>
			<div id="setText(const BString&)">
				<h3>bool setText(const BString&amp; text);</h3>
				<p>设置文本内容。</p>
			</div>
			<div id="text() const">
				<h3>const BString&amp; text() const;</h3>
				<p>获得文本内容。</p>
			</div>
			<div id="setLineText(int, const BString&)">
				<h3>bool setLineText(int line, const BString&amp; text);</h3>
				<p>设置某行的文本内容。</p>
			</div>
			<div id="lineText(int) const">
				<h3>const BString&amp; lineText(int line) const;</h3>
				<p>获得某行的文本内容。</p>
			</div>
			<div id="addText(const BString&)">
				<h3>bool addText(const BString&amp; text);</h3>
				<p>添加文本。</p>
			</div>
			<div id="inputText(const BString&)">
				<h3>bool inputText(const BString&amp; text);</h3>
				<p>在当前输入位置插入文本。</p>
			</div>
			<div id="insertText(int, const BString&)">
				<h3>bool insertText(int index, const BString&amp; text);</h3>
				<p>直接向文本的pos索引位置插入文本。</p>
			</div>
			<div id="insertText(int, int, const BString&)">
				<h3>bool insertText(int line, int index, const BString&amp; text);</h3>
				<p>直接向文本的line行的index索引位置插入文本。</p>
			</div>
			<div id="removeText(int, int)">
				<h3>bool removeText(int index, int count);</h3>
				<p>从文本的pos索引位置开始删除count数量的字符。</p>
			</div>
			<div id="removeText(int, int, int)">
				<h3>bool removeText(int line, int index, int count);</h3>
				<p>从文本的line行的index索引位置开始删除count数量的字符，可能连带后面多行一起删掉。</p>
			</div>
			<div id="removeLine(int) const">
				<h3>bool removeLine(int line) const;</h3>
				<p>删除掉指定的行文本。</p>
			</div>
			<div id="removeLines(int, int) const">
				<h3>bool removeLines(int line, int count) const;</h3>
				<p>从line开始删除若干行，count指定要删除的行数。</p>
			</div>
			<div id="setInputPos(int, int)">
				<h3>bool setInputPos(int line, int index);</h3>
				<p>设置输入光标位置为line行的index索引位置。</p>
			</div>
			<div id="setInputPos(int)">
				<h3>bool setInputPos(int index);</h3>
				<p>设置输入光标位置为pos位置，pos是指全文的字符单位。</p>
			</div>
			<div id="inputPos() const">
				<h3>int inputPos() const;</h3>
				<p>获得输入光标位置，其值为全文的字符数表示的位置。</p>
			</div>
			<div id="inputPos(int&) const">
				<h3>int inputPos(int&amp; line) const;</h3>
			</div>
			<div id="select(int, int)">
				<h3>bool select(int min, int max);</h3>
				<p>选择文本从最小min位置到最大位置max。</p>
			</div>
			<div id="select(const BRange&)">
				<h3>bool select(const BRange&amp; range);</h3>
				<p>选择文本在range的范围内。</p>
			</div>
			<div id="selectLines(int, int)">
				<h3>bool selectLines(int firstLine, int lastLine);</h3>
				<p>选择多行文本，从firstLine行开始的到最后一行lastLine。</p>
			</div>
			<div id="selectedRange() const">
				<h3>BRange selectedRange() const;</h3>
				<p>获得选中的文本的范围。</p>
			</div>
			<div id="selectedText() const">
				<h3>BString selectedText() const;</h3>
				<p>获得选中的文本内容。</p>
			</div>
			<div id="removeSelection()">
				<h3>bool removeSelection();</h3>
				<p>移除被选中的文本。</p>
			</div>
			<div id="codeCount() const">
				<h3>int codeCount() const;</h3>
				<p>获得文本的字符数量。</p>
			</div>
			<div id="indexAt(const BPoint&) const">
				<h3>int indexAt(const BPoint&amp; point) const;</h3>
				<p>获得点point的处的字符索引值。</p>
			</div>
			<div id="codeRect(int) const">
				<h3>BRect codeRect(int index) const;</h3>
				<p>获得指定文本的index索引位置的字符显示的矩形区域值。</p>
			</div>
			<div id="codeRect(int, int) const">
				<h3>BRect codeRect(int line, int index) const;</h3>
				<p>获得指定文本的line行的index索引位置的字符显示的矩形区域值。</p>
			</div>
			<div id="code(int) const">
				<h3>BCode code(int index) const;</h3>
				<p>取得文本中index索引位置的字符。</p>
			</div>
			<div id="code(int, int) const">
				<h3>BCode code(int line, int index) const;</h3>
				<p>取得文本中line行的index索引位置的字符。</p>
			</div>
			<div id="lineCount() const">
				<h3>int lineCount() const;</h3>
				<p>获得文本的行数。</p>
			</div>
			<div id="lineAt(const BPoint&) const">
				<h3>int lineAt(const BPoint&amp; point) const;</h3>
				<p>获得点point所在的行。</p>
			</div>
			<div id="lineRange(int) const">
				<h3>const BRange&amp; lineRange(int line) const;</h3>
				<p>获得指定行的字符在全文本中的范围。</p>
			</div>
			<div id="lineRect(int) const">
				<h3>const BRect&amp; lineRect(int line) const;</h3>
				<p>获得指定行的矩形区域。</p>
			</div>
			<div id="setLineVisible(int, bool)">
				<h3>bool setLineVisible(int line, bool visible);</h3>
				<p>设置指定行是否显示。</p>
			</div>
			<div id="lineVisible(int) const">
				<h3>bool lineVisible(int line) const;</h3>
				<p>获得指定行是否显示。</p>
			</div>
			<div id="setTextFormat(BTextFormat*)">
				<h3>bool setTextFormat(BTextFormat* format);</h3>
				<p>设置文本的格式对象，文本字符显示将应用此格式对象的数据。</p>
			</div>
			<div id="textFormat() const">
				<h3>const BTextFormat* textFormat() const;</h3>
				<p>获得文本的格式对象。</p>
			</div>
			<div id="textFormat()">
				<h3>BTextFormat* textFormat();</h3>
				<p>获得文本的格式对象。</p>
			</div>
			<div id="setLineFormat(int, BTextFormat*)">
				<h3>bool setLineFormat(int line, BTextFormat* format);</h3>
				<p>设置行文本格式对象，此样式只对指定的行有效，而且当行被删除时其格式对象也会被移除。</p>
			</div>
			<div id="lineFormat(int) const">
				<h3>const BTextFormat* lineFormat(int line) const;</h3>
				<p>获得指定行的文本格式对象。</p>
			</div>
			<div id="lineFormat(int)">
				<h3>BTextFormat* lineFormat(int line);</h3>
				<p>获得指定行的文本格式对象。</p>
			</div>
			<div id="redo()">
				<h3>bool redo();</h3>
				<p>重做栈顶的操作对象。</p>
			</div>
			<div id="undo()">
				<h3>bool undo();</h3>
				<p>撤消一个操作对象。</p>
			</div>
			<div id="pushOpera(BOpera*)">
				<h3>bool pushOpera(BOpera* opera);</h3>
				<p>向操作栈中压入一个操作对象。</p>
			</div>
			<div id="removeOpera(BOpera*)">
				<h3>bool removeOpera(BOpera* opera);</h3>
				<p>从操作栈中删除一个操作对象。</p>
			</div>
			<div id="operaIndex() const">
				<h3>int operaIndex() const;</h3>
				<p>获得当前操作栈的索引。</p>
			</div>
			<div id="operaCount() const">
				<h3>int operaCount() const;</h3>
				<p>获得操作对象的数量。</p>
			</div>
			<div id="opera(int) const">
				<h3>const BOpera* opera(int index) const;</h3>
				<p>获得第index个的操作对象。</p>
			</div>
			<div id="clearOperas()">
				<h3>bool clearOperas();</h3>
				<p>删除所有操作对象。</p>
			</div>
			<div id="scrollToLine(int,Align)">
				<h3>bool scrollToLine(int line, Align align = Align_None);</h3>
				<p>滚动内容区域到指定的行，有align指示了对齐方式则对应调整。</p><p>默认的对齐方式是无，表示目标区域就近进入视口即可。</p>
			</div>
			<div id="scrollToCode(int, int,Align)">
				<h3>bool scrollToCode(int line, int index, Align align = Align_None);</h3>
				<p>滚动内容区域到指定的行的index索引位置的字符，有align指示了对齐方式则对应调整。</p>
			</div>
			<div id="scrollToRange(const BRange&,Align)">
				<h3>bool scrollToRange(const BRange&amp; range, Align align = Align_None);</h3>
				<p>滚动内容区域到指定范围的字符区域，有align指示了对齐方式则对应调整。</p>
			</div>
			<div id="BScrollArea::input;()">
				<h3>using BScrollArea::input;</h3>
			</div>
			<div id="input(const BString&, const BValue&)">
				<h3>virtual bool input(const BString&amp; text, const BValue&amp; value);</h3>
				<p>输入表：</p><table>
					<tr><td>input-line</td><td>将输入位置转移到指定的行，并全部选中行中的字符。值为：int line。</td></tr>
					<tr><td>input-index</td><td>将输入位置转移到全文指定的字符位置。值为：int index。</td></tr>
					<tr><td>input-point</td><td>将输入位置转移到当视口中的指定位置，值为：BPoint point。</td></tr>
					<tr><td>select-range</td><td>将输入位置转移到指定范围起始字符位置，并选中范围内的字符。值为：BRange range。</td></tr></table>
			</div>
			<div id="BScrollArea::query;()">
				<h3>using BScrollArea::query;</h3>
			</div>
			<div id="query(const BString&, BValue&) const">
				<h3>virtual bool query(const BString&amp; text, BValue&amp; value) const;</h3>
				<p>查询表:</p>
				<table>
					<tr><td>changed</td><td>是否当前文本被改变了，值为：bool changed。</td></tr>
					<tr><td>input-line</td><td>当前正在输入的行，值为：int line。</td></tr>
					<tr><td>input-index</td><td>当前正在输入的行中字符位置，值为：int index。</td></tr>
					<tr><td>input-count</td><td>当前被选中的字符个数，值为：int count。</td></tr>
					<tr><td>selected-range</td><td>选中的字符串区间。值为：BRange range。</td></tr>
					<tr><td>selected-text</td><td>取得当前被选中的文本，值为：const BString&amp; text。</td></tr>
					<tr><td>selected-code-rects</td><td>取得当前被选中的字符的显示区块集合，值为：BRectArray codeRects。</td></tr>
					<tr><td>visual-range</td><td>取得可见的行范围，值为：BRange lineRange。</td></tr>
					<tr><td>visual-lines</td><td>取得可见的各个行，不被包含隐藏的行。值为：BIntArray lines。</td></tr>
					<tr><td>hovered-line</td><td>取得当前被悬停的行，值为：int hoveredLine。</td></tr>
					<tr><td>hovered-index</td><td>取得当前被悬停的行中的被悬停的字符索引位置，值为：int hoveredIndex。</td></tr>
				</table>
			</div>
			<div id="scrolling(Orientation)">
				<h3>virtual void scrolling(Orientation orientation);</h3>
				<p>滚动内容区域时，调整每个行的位置。</p>
			</div>
			<div id="updateEvent(const BEvent&)">
				<h3>virtual void updateEvent(const BEvent&amp; event);</h3>
				<p>当编辑状态下，更新输入光标的闪烁。</p>
			</div>
			<div id="resizeEvent(const BEvent&)">
				<h3>virtual void resizeEvent(const BEvent&amp; event);</h3>
				<p>当页面尺寸变化时，如果开启了自动换行，那么重新调整各个行。</p>
			</div>
			<div id="styleEvent(const BEvent&)">
				<h3>virtual void styleEvent(const BEvent&amp; event);</h3>
				<p>样式表取值：</p>
				<table>
					<tr><td>Value_Line_Height</td><td>取值为行高，值为：int lineHeight。</td></tr>
					<tr><td>Value_Line_Spacing</td><td>取值为行间距，值为：int lineSpacing。</td></tr>
				</table><p>附件样式:line</p>
				<table>
					<tr><td>Value_Line_Height</td><td>取值为行高，值为：int lineHeight。</td></tr>
					<tr><td>Value_Line_Spacing</td><td>取值为行间距，值为：int lineSpacing。</td></tr>
				</table>
			</div>
			<div id="freshEvent(const BEvent&)">
				<h3>virtual void freshEvent(const BEvent&amp; event);</h3><p>调整各行的字符布局，若有跳转需要则执行跳转。</p>
			</div>
			<div id="paintEvent(const BEvent&)">
				<h3>virtual void paintEvent(const BEvent&amp; event);</h3><p>绘制各行背景和文本，绘制输入光标。</p>
			</div>
			<div id="focusEvent(const BEvent&)">
				<h3>virtual void focusEvent(const BEvent&amp; event);</h3><p>编辑状态下失去焦点时完成编辑，发出信号：Signal_EditFinished。</p>
			</div>
			<div id="inputEvent(const BEvent&)">
				<h3>virtual void inputEvent(const BEvent&amp; event);</h3><p>处理编辑状态下的字符输入。</p>
			</div>
			<div id="keyPressEvent(const BKeyEvent&)">
				<h3>virtual void keyPressEvent(const BKeyEvent&amp; keyEvent);</h3><p>处理键盘操作：</p><table>
					<tr><td>Ctrl + C</td><td>复制选中的文本，空选中文本也会被应用到剪切板。</td></tr>
					<tr><td>Ctrl + A</td><td>选中所有文本。</td></tr>
					<tr><td>Ctrl + Z</td><td>撤消一个操作。</td></tr>
					<tr><td>Ctrl + V</td><td>文本粘贴操作。</td></tr>
					<tr><td>Ctrl + X</td><td>文本剪切操作。</td></tr>
					<tr><td>Key_Left</td><td>向左移动输入光标。</td></tr>
					<tr><td>Key_Right</td><td>向右移动输入光标。</td></tr>
					<tr><td>Key_Up</td><td>向上移动输入光标。</td></tr>
					<tr><td>Key_Down</td><td>向下移动输入光标。</td></tr>
					<tr><td>Key_Tab</td><td>当多行选中时对多行进行缩进操作，此时Shift表示减少缩进。非多行选中时输入一个制表符。</td></tr>
					<tr><td>Key_Enter</td><td>输入换行符。</td></tr>
					<tr><td>Key_Delete</td><td>向后删除字符，当按下Ctrl键时向后删除一个词。</td></tr>
					<tr><td>Key_Back</td><td>向前删除字符，当按下Ctrl键时向前删除一个词。</td></tr>
					<tr><td>Key_Home</td><td>输入光标移动到行首。</td></tr>
					<tr><td>Key_End</td><td>输入光标移动到行尾。</td></tr></table>
			</div>
			<div id="keyReleaseEvent(const BKeyEvent&)">
				<h3>virtual void keyReleaseEvent(const BKeyEvent&amp; keyEvent);</h3>
			</div>
			<div id="mouseEnterEvent(const BMouseEvent&)">
				<h3>virtual void mouseEnterEvent(const BMouseEvent&amp; mouseEvent);</h3><p>清除悬停状态。</p>
			</div>
			<div id="mouseLeaveEvent(const BMouseEvent&)">
				<h3>virtual void mouseLeaveEvent(const BMouseEvent&amp; mouseEvent);</h3><p>清除悬停状态。</p>
			</div>
			<div id="mousePressEvent(const BMouseEvent&)">
				<h3>virtual void mousePressEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新输入光标的位置，按下Shift键选择字符。</p>
			</div>
			<div id="mouseReleaseEvent(const BMouseEvent&)">
				<h3>virtual void mouseReleaseEvent(const BMouseEvent&amp; mouseEvent);</h3><p>清除左键按下状态。</p>
			</div>
			<div id="mouseMoveEvent(const BMouseEvent&)">
				<h3>virtual void mouseMoveEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新被悬停的字符和行，按下左键时划选文本。</p>
			</div>
			<div id="mouseDoubleClickEvent(const BMouseEvent&)">
				<h3>virtual void mouseDoubleClickEvent(const BMouseEvent&amp; mouseEvent);</h3><p>双击左键选择词。</p>
			</div>
		</div>
	</body>
</html>